home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1997 December / PC Pro December 1997 CD-Rom coverdisc.iso / symantec / dbAnywh / JAVA.BIN / CLASSES.ZIP / sun / applet / AppletViewer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-12-14  |  16.2 KB  |  668 lines

  1. package sun.applet;
  2.  
  3. import java.applet.Applet;
  4. import java.applet.AppletContext;
  5. import java.applet.AudioClip;
  6. import java.awt.Component;
  7. import java.awt.Container;
  8. import java.awt.Dimension;
  9. import java.awt.Event;
  10. import java.awt.Frame;
  11. import java.awt.Image;
  12. import java.awt.Insets;
  13. import java.awt.Label;
  14. import java.awt.Menu;
  15. import java.awt.MenuBar;
  16. import java.awt.MenuItem;
  17. import java.awt.Point;
  18. import java.awt.Toolkit;
  19. import java.awt.Window;
  20. import java.io.BufferedInputStream;
  21. import java.io.ByteArrayOutputStream;
  22. import java.io.File;
  23. import java.io.FileInputStream;
  24. import java.io.IOException;
  25. import java.io.InputStream;
  26. import java.io.PrintStream;
  27. import java.net.MalformedURLException;
  28. import java.net.URL;
  29. import java.util.Enumeration;
  30. import java.util.Hashtable;
  31. import java.util.Properties;
  32. import java.util.Vector;
  33. import sun.awt.image.URLImageSource;
  34.  
  35. public class AppletViewer extends Frame implements AppletContext {
  36.    public static String theVersion = "1.0.2";
  37.    public static File theUserPropertiesFile;
  38.    public static File theAppletViewerPropsFile;
  39.    AppletViewerPanel panel;
  40.    Label label;
  41.    PrintStream statusMsgStream;
  42.    AppletViewerFactory factory;
  43.    static Hashtable audioHash;
  44.    static Hashtable imgHash;
  45.    static Vector appletPanels;
  46.    static Hashtable systemParam;
  47.    static AppletProps props;
  48.    // $FF: renamed from: c int
  49.    static int field_0;
  50.    // $FF: renamed from: x int
  51.    static int field_1;
  52.    // $FF: renamed from: y int
  53.    static int field_2;
  54.    static boolean didInitialize;
  55.  
  56.    public AppletViewer(int var1, int var2, URL var3, Hashtable var4, PrintStream var5, AppletViewerFactory var6) {
  57.       this.factory = var6;
  58.       this.statusMsgStream = var5;
  59.       ((Frame)this).setTitle("Applet Viewer: " + var4.get("code"));
  60.       MenuBar var7 = var6.getBaseMenuBar();
  61.       Menu var8 = new Menu("Applet");
  62.       var8.add(new MenuItem("Restart"));
  63.       var8.add(new MenuItem("Reload"));
  64.       var8.add(new MenuItem("Clone"));
  65.       var8.add(new MenuItem("-"));
  66.       var8.add(new MenuItem("Tag"));
  67.       var8.add(new MenuItem("Info"));
  68.       var8.add(new MenuItem("Edit")).disable();
  69.       var8.add(new MenuItem("-"));
  70.       var8.add(new MenuItem("Properties"));
  71.       var8.add(new MenuItem("-"));
  72.       var8.add(new MenuItem("Close"));
  73.       if (var6.isStandalone()) {
  74.          var8.add(new MenuItem("Quit"));
  75.       }
  76.  
  77.       var7.add(var8);
  78.       ((Frame)this).setMenuBar(var7);
  79.       ((Component)this).reshape(var1, var2, 400, 200);
  80.       ((Container)this).add("Center", this.panel = new AppletViewerPanel(var3, var4));
  81.       ((Container)this).add("South", this.label = new Label("Hello..."));
  82.       this.panel.init();
  83.       appletPanels.addElement(this.panel);
  84.       ((Window)this).pack();
  85.       ((Window)this).show();
  86.       this.showStatus("starting applet...");
  87.       this.panel.sendEvent(1);
  88.       this.panel.sendEvent(2);
  89.       this.panel.sendEvent(3);
  90.    }
  91.  
  92.    static synchronized AudioClip getAudioClipFromCache(URL var0) {
  93.       System.getSecurityManager().checkConnect(var0.getHost(), var0.getPort());
  94.       Object var1 = (AudioClip)audioHash.get(var0);
  95.       if (var1 == null) {
  96.          audioHash.put(var0, var1 = new AppletAudioClip(var0));
  97.       }
  98.  
  99.       return (AudioClip)var1;
  100.    }
  101.  
  102.    public AudioClip getAudioClip(URL var1) {
  103.       return getAudioClipFromCache(var1);
  104.    }
  105.  
  106.    static synchronized Image getImageFromHash(URL var0) {
  107.       System.getSecurityManager().checkConnect(var0.getHost(), var0.getPort());
  108.       Image var1 = (Image)imgHash.get(var0);
  109.       if (var1 == null) {
  110.          try {
  111.             imgHash.put(var0, var1 = Toolkit.getDefaultToolkit().createImage(new URLImageSource(var0)));
  112.          } catch (Exception var2) {
  113.          }
  114.       }
  115.  
  116.       return var1;
  117.    }
  118.  
  119.    public Image getImage(URL var1) {
  120.       return getImageFromHash(var1);
  121.    }
  122.  
  123.    public Applet getApplet(String var1) {
  124.       AppletSecurity var2 = (AppletSecurity)System.getSecurityManager();
  125.       var1 = var1.toLowerCase();
  126.       Enumeration var3 = appletPanels.elements();
  127.  
  128.       while(var3.hasMoreElements()) {
  129.          AppletPanel var4 = (AppletPanel)var3.nextElement();
  130.          String var5 = var4.getParameter("name");
  131.          if (var5 != null) {
  132.             var5 = var5.toLowerCase();
  133.          }
  134.  
  135.          if (var1.equals(var5) && var4.getDocumentBase().equals(this.panel.getDocumentBase())) {
  136.             try {
  137.                var2.checkConnect(this.panel.getCodeBase().getHost(), var4.getCodeBase().getHost());
  138.                return var4.applet;
  139.             } catch (SecurityException var6) {
  140.             }
  141.          }
  142.       }
  143.  
  144.       return null;
  145.    }
  146.  
  147.    public Enumeration getApplets() {
  148.       AppletSecurity var1 = (AppletSecurity)System.getSecurityManager();
  149.       Vector var2 = new Vector();
  150.       Enumeration var3 = appletPanels.elements();
  151.  
  152.       while(var3.hasMoreElements()) {
  153.          AppletPanel var4 = (AppletPanel)var3.nextElement();
  154.          if (var4.getDocumentBase().equals(this.panel.getDocumentBase())) {
  155.             try {
  156.                var1.checkConnect(this.panel.getCodeBase().getHost(), var4.getCodeBase().getHost());
  157.                var2.addElement(var4.applet);
  158.             } catch (SecurityException var5) {
  159.             }
  160.          }
  161.       }
  162.  
  163.       return var2.elements();
  164.    }
  165.  
  166.    public void showDocument(URL var1) {
  167.    }
  168.  
  169.    public void showDocument(URL var1, String var2) {
  170.    }
  171.  
  172.    public void showStatus(String var1) {
  173.       this.label.setText(var1);
  174.    }
  175.  
  176.    static void printTag(PrintStream var0, Hashtable var1) {
  177.       var0.print("<applet");
  178.       String var2 = (String)var1.get("zipbase");
  179.       if (var2 != null) {
  180.          var0.print(" zipbase=\"" + var2 + "\"");
  181.       }
  182.  
  183.       var2 = (String)var1.get("codebase");
  184.       if (var2 != null) {
  185.          var0.print(" codebase=\"" + var2 + "\"");
  186.       }
  187.  
  188.       var2 = (String)var1.get("code");
  189.       if (var2 == null) {
  190.          var2 = "applet.class";
  191.       }
  192.  
  193.       var0.print(" code=\"" + var2 + "\"");
  194.       var2 = (String)var1.get("width");
  195.       if (var2 == null) {
  196.          var2 = "150";
  197.       }
  198.  
  199.       var0.print(" width=" + var2);
  200.       var2 = (String)var1.get("height");
  201.       if (var2 == null) {
  202.          var2 = "100";
  203.       }
  204.  
  205.       var0.print(" height=" + var2);
  206.       var2 = (String)var1.get("name");
  207.       if (var2 != null) {
  208.          var0.print(" name=\"" + var2 + "\"");
  209.       }
  210.  
  211.       var0.println(">");
  212.       int var3 = var1.size();
  213.       String[] var4 = new String[var3];
  214.       var3 = 0;
  215.  
  216.       for(Enumeration var5 = var1.keys(); var5.hasMoreElements(); ++var3) {
  217.          String var6 = (String)var5.nextElement();
  218.  
  219.          int var7;
  220.          for(var7 = 0; var7 < var3 && var4[var7].compareTo(var6) < 0; ++var7) {
  221.          }
  222.  
  223.          System.arraycopy(var4, var7, var4, var7 + 1, var3 - var7);
  224.          var4[var7] = var6;
  225.       }
  226.  
  227.       for(int var14 = 0; var14 < var3; ++var14) {
  228.          String var15 = var4[var14];
  229.          if (systemParam.get(var15) == null) {
  230.             var0.println("<param name=" + var15 + " value=\"" + var1.get(var15) + "\">");
  231.          }
  232.       }
  233.  
  234.       var0.println("</applet>");
  235.    }
  236.  
  237.    public void updateAtts() {
  238.       Dimension var1 = this.panel.size();
  239.       Insets var2 = this.panel.insets();
  240.       this.panel.atts.put("width", (new Integer(var1.width - (var2.left + var2.right))).toString());
  241.       this.panel.atts.put("height", (new Integer(var1.height - (var2.top + var2.bottom))).toString());
  242.    }
  243.  
  244.    void appletRestart() {
  245.       this.panel.sendEvent(4);
  246.       this.panel.sendEvent(5);
  247.       this.panel.sendEvent(2);
  248.       this.panel.sendEvent(3);
  249.    }
  250.  
  251.    void appletReload() {
  252.       this.panel.sendEvent(4);
  253.       this.panel.sendEvent(5);
  254.       this.panel.sendEvent(0);
  255.       AppletPanel.flushClassLoader(this.panel.baseURL);
  256.       this.panel.sendEvent(1);
  257.       this.panel.sendEvent(2);
  258.       this.panel.sendEvent(3);
  259.    }
  260.  
  261.    void appletClone() {
  262.       Point var1 = ((Component)this).location();
  263.       this.updateAtts();
  264.       this.factory.createAppletViewer(var1.x + 30, var1.y + 10, this.panel.documentURL, (Hashtable)this.panel.atts.clone());
  265.    }
  266.  
  267.    void appletTag() {
  268.       ByteArrayOutputStream var1 = new ByteArrayOutputStream();
  269.       this.updateAtts();
  270.       printTag(new PrintStream(var1), this.panel.atts);
  271.       this.showStatus("Tag shown");
  272.       Point var2 = ((Component)this).location();
  273.       new TextFrame(var2.x + 50, var2.y + 20, "Applet HTML Tag", var1.toString());
  274.    }
  275.  
  276.    void appletInfo() {
  277.       String var1 = this.panel.applet.getAppletInfo();
  278.       if (var1 == null) {
  279.          var1 = "-- no applet info --";
  280.       }
  281.  
  282.       var1 = var1 + "\n\n";
  283.       String[][] var2 = this.panel.applet.getParameterInfo();
  284.       if (var2 != null) {
  285.          for(int var3 = 0; var3 < var2.length; ++var3) {
  286.             var1 = var1 + var2[var3][0] + " -- " + var2[var3][1] + " -- " + var2[var3][2] + "\n";
  287.          }
  288.       } else {
  289.          var1 = var1 + "-- no parameter info --";
  290.       }
  291.  
  292.       Point var5 = ((Component)this).location();
  293.       new TextFrame(var5.x + 50, var5.y + 20, "Applet Info", var1);
  294.    }
  295.  
  296.    void appletEdit() {
  297.    }
  298.  
  299.    public static synchronized void networkProperties() {
  300.       if (props == null) {
  301.          props = new AppletProps();
  302.       }
  303.  
  304.       props.show();
  305.    }
  306.  
  307.    void appletStart() {
  308.       this.panel.sendEvent(3);
  309.    }
  310.  
  311.    void appletStop() {
  312.       this.panel.sendEvent(4);
  313.    }
  314.  
  315.    void appletClose() {
  316.       this.panel.sendEvent(4);
  317.       this.panel.sendEvent(5);
  318.       this.panel.sendEvent(0);
  319.       this.panel.sendEvent(6);
  320.       appletPanels.removeElement(this.panel);
  321.       ((Frame)this).dispose();
  322.       if (countApplets() == 0) {
  323.          this.appletQuit();
  324.       }
  325.  
  326.    }
  327.  
  328.    protected void appletQuit() {
  329.       if (this.factory.isStandalone()) {
  330.          System.exit(0);
  331.       }
  332.  
  333.    }
  334.  
  335.    public boolean handleEvent(Event var1) {
  336.       switch (var1.id) {
  337.          case 201:
  338.             this.appletClose();
  339.             return true;
  340.          case 203:
  341.             this.appletStop();
  342.             return true;
  343.          case 204:
  344.             this.appletStart();
  345.             return true;
  346.          case 503:
  347.          case 504:
  348.          case 505:
  349.          case 506:
  350.             return super.handleEvent(var1);
  351.          case 1001:
  352.             if ("Restart".equals(var1.arg)) {
  353.                this.appletRestart();
  354.                return true;
  355.             } else if ("Reload".equals(var1.arg)) {
  356.                this.appletReload();
  357.                return true;
  358.             } else if ("Clone".equals(var1.arg)) {
  359.                this.appletClone();
  360.                return true;
  361.             } else if ("Tag".equals(var1.arg)) {
  362.                this.appletTag();
  363.                return true;
  364.             } else if ("Info".equals(var1.arg)) {
  365.                this.appletInfo();
  366.                return true;
  367.             } else if ("Edit".equals(var1.arg)) {
  368.                this.appletEdit();
  369.                return true;
  370.             } else if ("Properties".equals(var1.arg)) {
  371.                networkProperties();
  372.                return true;
  373.             } else if ("Close".equals(var1.arg)) {
  374.                this.appletClose();
  375.                return true;
  376.             } else if (this.factory.isStandalone() && "Quit".equals(var1.arg)) {
  377.                this.appletQuit();
  378.                return true;
  379.             }
  380.          default:
  381.             return super.handleEvent(var1);
  382.          case 51234:
  383.             ((Component)this).resize(((Container)this).preferredSize());
  384.             ((Container)this).validate();
  385.             return true;
  386.       }
  387.    }
  388.  
  389.    public static int countApplets() {
  390.       return appletPanels.size();
  391.    }
  392.  
  393.    public static void init() {
  394.       Properties var0 = new Properties(System.getProperties());
  395.       ((Hashtable)var0).put("acl.read", "+");
  396.       ((Hashtable)var0).put("acl.read.default", "");
  397.       ((Hashtable)var0).put("acl.write", "+");
  398.       ((Hashtable)var0).put("acl.write.default", "");
  399.       ((Hashtable)var0).put("browser", "sun.applet.AppletViewer");
  400.       ((Hashtable)var0).put("browser.version", "1.06");
  401.       ((Hashtable)var0).put("browser.vendor", "Sun Microsystems Inc.");
  402.       ((Hashtable)var0).put("http.agent", "JDK/" + theVersion);
  403.       ((Hashtable)var0).put("firewallSet", "true");
  404.       ((Hashtable)var0).put("firewallHost", "sunweb.ebay");
  405.       ((Hashtable)var0).put("firewallPort", "80");
  406.       ((Hashtable)var0).put("package.restrict.access.sun", "true");
  407.       ((Hashtable)var0).put("package.restrict.access.netscape", "true");
  408.       ((Hashtable)var0).put("package.restrict.definition.java", "true");
  409.       ((Hashtable)var0).put("package.restrict.definition.sun", "true");
  410.       ((Hashtable)var0).put("package.restrict.definition.netscape", "true");
  411.       ((Hashtable)var0).put("java.version.applet", "true");
  412.       ((Hashtable)var0).put("java.vendor.applet", "true");
  413.       ((Hashtable)var0).put("java.vendor.url.applet", "true");
  414.       ((Hashtable)var0).put("java.class.version.applet", "true");
  415.       ((Hashtable)var0).put("os.name.applet", "true");
  416.       ((Hashtable)var0).put("os.version.applet", "true");
  417.       ((Hashtable)var0).put("os.arch.applet", "true");
  418.       ((Hashtable)var0).put("file.separator.applet", "true");
  419.       ((Hashtable)var0).put("path.separator.applet", "true");
  420.       ((Hashtable)var0).put("line.separator.applet", "true");
  421.       var0 = new Properties(var0);
  422.  
  423.       try {
  424.          FileInputStream var1 = new FileInputStream(theAppletViewerPropsFile);
  425.          var0.load(new BufferedInputStream(var1));
  426.          var1.close();
  427.       } catch (Exception var3) {
  428.          System.out.println("[no appletviewer.properties file found!]");
  429.       }
  430.  
  431.       try {
  432.          FileInputStream var5 = new FileInputStream(theUserPropertiesFile);
  433.          var0.load(new BufferedInputStream(var5));
  434.          var5.close();
  435.       } catch (Exception var2) {
  436.       }
  437.  
  438.       System.setProperties(var0);
  439.       System.setSecurityManager(new AppletSecurity());
  440.    }
  441.  
  442.    static void skipSpace(InputStream var0) throws IOException {
  443.       while(field_0 >= 0 && (field_0 == 32 || field_0 == 9 || field_0 == 10 || field_0 == 13)) {
  444.          field_0 = var0.read();
  445.       }
  446.  
  447.    }
  448.  
  449.    static String scanIdentifier(InputStream var0) throws IOException {
  450.       StringBuffer var1;
  451.       for(var1 = new StringBuffer(); field_0 >= 97 && field_0 <= 122 || field_0 >= 65 && field_0 <= 90 || field_0 >= 48 && field_0 <= 57 || field_0 == 95; field_0 = var0.read()) {
  452.          var1.append((char)field_0);
  453.       }
  454.  
  455.       return var1.toString();
  456.    }
  457.  
  458.    static Hashtable scanTag(InputStream var0) throws IOException {
  459.       Hashtable var1 = new Hashtable();
  460.       skipSpace(var0);
  461.  
  462.       while(field_0 >= 0 && field_0 != 62) {
  463.          String var2 = scanIdentifier(var0);
  464.          String var3 = "";
  465.          skipSpace(var0);
  466.          if (field_0 == 61) {
  467.             int var4 = -1;
  468.             field_0 = var0.read();
  469.             skipSpace(var0);
  470.             if (field_0 == 39 || field_0 == 34) {
  471.                var4 = field_0;
  472.                field_0 = var0.read();
  473.             }
  474.  
  475.             StringBuffer var5;
  476.             for(var5 = new StringBuffer(); field_0 > 0 && (var4 < 0 && field_0 != 32 && field_0 != 9 && field_0 != 10 && field_0 != 13 && field_0 != 62 || var4 >= 0 && field_0 != var4); field_0 = var0.read()) {
  477.                var5.append((char)field_0);
  478.             }
  479.  
  480.             if (field_0 == var4) {
  481.                field_0 = var0.read();
  482.             }
  483.  
  484.             skipSpace(var0);
  485.             var3 = var5.toString();
  486.          }
  487.  
  488.          var1.put(var2.toLowerCase(), var3);
  489.          skipSpace(var0);
  490.       }
  491.  
  492.       return var1;
  493.    }
  494.  
  495.    static void parse(URL var0) throws IOException {
  496.       parse(var0, System.out, new StdAppletViewerFactory());
  497.    }
  498.  
  499.    public static void parse(URL var0, PrintStream var1, AppletViewerFactory var2) throws IOException {
  500.       InputStream var3 = var0.openStream();
  501.       Hashtable var4 = null;
  502.       field_0 = var3.read();
  503.  
  504.       while(field_0 >= 0) {
  505.          if (field_0 == 60) {
  506.             field_0 = var3.read();
  507.             if (field_0 == 47) {
  508.                field_0 = var3.read();
  509.                String var5 = scanIdentifier(var3);
  510.                if (var5.equalsIgnoreCase("applet")) {
  511.                   if (var4 != null) {
  512.                      var2.createAppletViewer(field_1, field_2, var0, var4);
  513.                      field_1 += 50;
  514.                      field_2 += 20;
  515.                      Dimension var6 = Toolkit.getDefaultToolkit().getScreenSize();
  516.                      if (field_1 > var6.width - 30) {
  517.                         field_1 = 100;
  518.                      }
  519.  
  520.                      if (field_2 > var6.height - 30) {
  521.                         field_1 = 50;
  522.                      }
  523.                   }
  524.  
  525.                   var4 = null;
  526.                }
  527.             } else {
  528.                String var9 = scanIdentifier(var3);
  529.                if (var9.equalsIgnoreCase("param")) {
  530.                   Hashtable var12 = scanTag(var3);
  531.                   String var7 = (String)var12.get("name");
  532.                   if (var7 == null) {
  533.                      var1.println("Warning: <param name=... value=...> tag requires name attribute.");
  534.                   } else {
  535.                      String var8 = (String)var12.get("value");
  536.                      if (var8 == null) {
  537.                         var1.println("Warning: <param name=... value=...> tag requires value attribute.");
  538.                      } else if (var4 != null) {
  539.                         var4.put(var7.toLowerCase(), var8);
  540.                      } else {
  541.                         var1.println("Warning: <param> tag outside <applet> ... </applet>.");
  542.                      }
  543.                   }
  544.                } else if (var9.equalsIgnoreCase("applet")) {
  545.                   var4 = scanTag(var3);
  546.                   if (var4.get("code") == null) {
  547.                      var1.println("Warning: <applet> tag requires code attribute.");
  548.                      var4 = null;
  549.                   } else if (var4.get("width") == null) {
  550.                      var1.println("Warning: <applet> tag requires width attribute.");
  551.                      var4 = null;
  552.                   } else if (var4.get("height") == null) {
  553.                      var1.println("Warning: <applet> tag requires height attribute.");
  554.                      var4 = null;
  555.                   }
  556.                } else if (var9.equalsIgnoreCase("app")) {
  557.                   var1.println("Warning: <app> tag no longer supported, use <applet> instead:");
  558.                   Hashtable var13 = scanTag(var3);
  559.                   var9 = (String)var13.get("class");
  560.                   if (var9 != null) {
  561.                      var13.remove("class");
  562.                      var13.put("code", var9 + ".class");
  563.                   }
  564.  
  565.                   var9 = (String)var13.get("src");
  566.                   if (var9 != null) {
  567.                      var13.remove("src");
  568.                      var13.put("codebase", var9);
  569.                   }
  570.  
  571.                   if (var13.get("width") == null) {
  572.                      var13.put("width", "100");
  573.                   }
  574.  
  575.                   if (var13.get("height") == null) {
  576.                      var13.put("height", "100");
  577.                   }
  578.  
  579.                   printTag(var1, var13);
  580.                   var1.println();
  581.                }
  582.             }
  583.          } else {
  584.             field_0 = var3.read();
  585.          }
  586.       }
  587.  
  588.       var3.close();
  589.    }
  590.  
  591.    static void usage() {
  592.       System.out.println("use: appletviewer [-debug] url|file ...");
  593.    }
  594.  
  595.    public static void mainInit() {
  596.       if (!didInitialize) {
  597.          didInitialize = true;
  598.          init();
  599.          if (!theVersion.equals(System.getProperty("appletviewer.version"))) {
  600.             (new AppletCopyright()).waitForUser();
  601.          }
  602.       }
  603.  
  604.    }
  605.  
  606.    public static void main(String[] var0) {
  607.       mainInit();
  608.       if (var0.length == 0) {
  609.          System.out.println("No input files specified.");
  610.          usage();
  611.       } else {
  612.          for(int var1 = 0; var1 < var0.length; ++var1) {
  613.             try {
  614.                URL var5;
  615.                if (var0[var1].indexOf(58) <= 1) {
  616.                   var5 = new URL("file:" + System.getProperty("user.dir").replace(File.separatorChar, '/') + "/");
  617.                   var5 = new URL(var5, var0[var1]);
  618.                } else {
  619.                   var5 = new URL(var0[var1]);
  620.                }
  621.  
  622.                parse(var5);
  623.             } catch (MalformedURLException var3) {
  624.                System.out.println("Bad URL: " + var0[var1] + " (" + ((Throwable)var3).getMessage() + ")");
  625.                System.exit(1);
  626.             } catch (IOException var4) {
  627.                System.out.println("I/O exception while reading: " + ((Throwable)var4).getMessage());
  628.                if (var0[var1].indexOf(58) < 0) {
  629.                   System.out.println("Make sure that " + var0[var1] + " is a file and is readable.");
  630.                } else {
  631.                   System.out.println("Is " + var0[var1] + " the correct URL?");
  632.                }
  633.  
  634.                System.exit(1);
  635.             }
  636.          }
  637.  
  638.          if (countApplets() == 0) {
  639.             System.out.println("Warning: No Applets were started, make sure the input contains an <applet> tag.");
  640.             usage();
  641.             System.exit(1);
  642.          }
  643.  
  644.       }
  645.    }
  646.  
  647.    static {
  648.       theUserPropertiesFile = new File(System.getProperty("user.home") + File.separator + ".hotjava" + File.separator + "properties");
  649.       (new File(theUserPropertiesFile.getParent())).mkdirs();
  650.       theAppletViewerPropsFile = new File(System.getProperty("java.home") + File.separator + "lib" + File.separator + "appletviewer.properties");
  651.       audioHash = new Hashtable();
  652.       imgHash = new Hashtable();
  653.       appletPanels = new Vector();
  654.       systemParam = new Hashtable();
  655.       systemParam.put("zipbase", "zipbase");
  656.       systemParam.put("codebase", "codebase");
  657.       systemParam.put("code", "code");
  658.       systemParam.put("alt", "alt");
  659.       systemParam.put("width", "width");
  660.       systemParam.put("height", "height");
  661.       systemParam.put("align", "align");
  662.       systemParam.put("vspace", "vspace");
  663.       systemParam.put("hspace", "hspace");
  664.       field_1 = 100;
  665.       field_2 = 50;
  666.    }
  667. }
  668.